package everyday;

import java.util.PriorityQueue;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/6/12 10:19
 * 215. 数组中的第 K 个最大元素
 * https://leetcode.cn/problems/kth-largest-element-in-an-array/
 */
public class Solution215 {

    public int findKthLargest(int[] nums, int k) {
        PriorityQueue<Integer> minQueue = new PriorityQueue<>();
        // 先存 k 个数
        int index = 0;
        while (index < k) {
            minQueue.offer(nums[index++]);
        }
        // 遍历剩余的维护 k 个最大值
        while (index < nums.length) {
            if (nums[index] >= minQueue.peek()) {
                minQueue.poll();
                minQueue.offer(nums[index]);
            }
            ++index;
        }
        // 得到第 k 个最大的数
        return minQueue.peek();
    }
}
